home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / TMTC.CPP < prev    next >
C/C++ Source or Header  |  1995-01-11  |  3KB  |  113 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4.  
  5. #include "include.h"
  6. #include "newmat.h"
  7.  
  8. void Print(const Matrix& X);
  9. void Print(const UpperTriangularMatrix& X);
  10. void Print(const DiagonalMatrix& X);
  11. void Print(const SymmetricMatrix& X);
  12. void Print(const LowerTriangularMatrix& X);
  13.  
  14. void Clean(Matrix&, Real);
  15.  
  16.  
  17.  
  18. void trymatc()
  19. {
  20. //   cout << "\nTwelfth test of Matrix package\n";
  21.    Tracer et("Twelfth test of Matrix package");
  22.    Exception::PrintTrace(TRUE);
  23.    DiagonalMatrix D(15); D=1.5;
  24.    Matrix A(15,15);
  25.    int i,j;
  26.    for (i=1;i<=15;i++) for (j=1;j<=15;j++) A(i,j)=i*i+j-150;
  27.    { A = A + D; }
  28.    ColumnVector B(15);
  29.    for (i=1;i<=15;i++) B(i)=i+i*i-150.0;
  30.    {
  31.       Tracer et1("Stage 1");
  32.       ColumnVector B1=B;
  33.       B=(A*2.0).i() * B1;
  34.       Matrix X = A*B-B1/2.0;
  35.       Clean(X, 0.000000001); Print(X);
  36.       A.ReDimension(3,5);
  37.       for (i=1; i<=3; i++) for (j=1; j<=5; j++) A(i,j) = i+100*j;
  38.  
  39.       B = A.AsColumn()+10000;
  40.       RowVector R = (A+10000).AsColumn().t();
  41.       Print( RowVector(R-B.t()) );
  42.    }
  43.  
  44.    {
  45.       Tracer et1("Stage 2");
  46.       B = A.AsColumn()+10000;
  47.       Matrix XR = (A+10000).AsMatrix(15,1).t();
  48.       Print( RowVector(XR-B.t()) );
  49.    }
  50.  
  51.    {
  52.       Tracer et1("Stage 3");
  53.       B = (A.AsMatrix(15,1)+A.AsColumn())/2.0+10000;
  54.       Matrix MR = (A+10000).AsColumn().t();
  55.       Print( RowVector(MR-B.t()) );
  56.  
  57.       B = (A.AsMatrix(15,1)+A.AsColumn())/2.0;
  58.       MR = A.AsColumn().t();
  59.       Print( RowVector(MR-B.t()) );
  60.    }
  61.  
  62.    {
  63.       Tracer et1("Stage 4");
  64.       B = (A.AsMatrix(15,1)+A.AsColumn())/2.0;
  65.       RowVector R = A.AsColumn().t();
  66.       Print( RowVector(R-B.t()) );
  67.    }
  68.  
  69.    {
  70.       Tracer et1("Stage 5");
  71.       RowVector R = (A.AsColumn()-5000).t();
  72.       B = ((R.t()+10000) - A.AsColumn())-5000;
  73.       Print( RowVector(B.t()) );
  74.    }
  75.  
  76.    {
  77.       Tracer et1("Stage 6");
  78.       B = A.AsColumn(); ColumnVector B1 = (A+10000).AsColumn() - 10000;
  79.       Print(ColumnVector(B1-B));
  80.    }
  81.  
  82.    {
  83.       Tracer et1("Stage 7");
  84.       Matrix X = B.AsMatrix(3,5); Print(Matrix(X-A));
  85.       for (i=1; i<=3; i++) for (j=1; j<=5; j++) B(5*(i-1)+j) -= i+100*j;
  86.       Print(B);
  87.    }
  88.  
  89.    {
  90.       Tracer et1("Stage 8");
  91.       A.ReDimension(7,7); D.ReDimension(7);
  92.       for (i=1; i<=7; i++) for (j=1; j<=7; j++) A(i,j) = i*j*j;
  93.       for (i=1; i<=7; i++) D(i,i) = i;
  94.       UpperTriangularMatrix U; U << A;
  95.       Matrix X = A; for (i=1; i<=7; i++) X(i,i) = i;
  96.       A.Inject(D); Print(Matrix(X-A));
  97.       X = U; U.Inject(D); A = U; for (i=1; i<=7; i++) X(i,i) = i;
  98.       Print(Matrix(X-A));
  99.    }
  100.  
  101.    {
  102.       Tracer et1("Stage 9");
  103.       A.ReDimension(7,5);
  104.       for (i=1; i<=7; i++) for (j=1; j<=5; j++) A(i,j) = i+100*j;
  105.       Matrix Y = A; Y = Y - ((const Matrix&)A); Print(Y);
  106.       Matrix X = A; // X.Release();
  107.       Y = A; Y = ((const Matrix&)X) - A; Print(Y); Y = 0.0;
  108.       Y = ((const Matrix&)X) - ((const Matrix&)A); Print(Y);
  109.    }
  110.  
  111. //   cout << "\nEnd of twelfth test\n";
  112. }
  113.